package start.spring.basic.interceptor;

import org.slf4j.MDC;
import org.springframework.context.annotation.Configuration;

import feign.RequestInterceptor;
import feign.RequestTemplate;
import start.spring.basic.log.LogConstant;
import start.spring.basic.util.common.StringUtil;

/**
 * 
 * ****************************************************************************
 * Feign请求调用公共拦截器
 * 调用方使用，被调方由于要提供api包给第三方，为了减少非必要的代码耦合，被调用方根据需要在具体接口上设置需要传递的请求头
 *
 * @author(作者)：xuyongyun	
 * @date(创建日期)：2023年2月10日
 ******************************************************************************
 */
@Configuration
public class FeignRequestInterceptor implements RequestInterceptor {

	@Override
	public void apply(RequestTemplate template) {
		String traceId = MDC.get(LogConstant.REQUEST_KEY_TRACEID).toString();
		if(StringUtil.isEmpty(traceId)) {
			traceId = StringUtil.getUuid();
		}
		template.header(LogConstant.REQUEST_KEY_TRACEID, traceId);
	}

}
